import urllib.request
from bs4 import BeautifulSoup
import json

###解析首页####
def spider_index(url):
    #请求页面地址
    req = urllib.request.Request(url)
    req.add_header('User-Agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36')
    html = urllib.request.urlopen(req).read().decode('utf-8')
    #使用BeautifulSoup库进行解析
    soup = BeautifulSoup(html,features='lxml')
    return soup

##爬取益智推荐游戏标题
def spider_title(soup):
    soup = soup.find('a',{'class':'w_tabs_i w_tabs_ied'})
    #先将此处写入的标题写入文件（未清洗）使用with打开文件，可以不加关闭
    # with open('action_7k7k.txt','a',encoding='utf-8') as f:
    #     f.write('初始形式的游戏标题：'+str(soup))  #将tag对象强转为字符
    print(soup)
    #进行数据清洗，我们需要的仅仅为h2标签的数据
    return soup.h2.string
##爬取所有的益智推荐游戏
def spider_all_yizhi(soup):
    #第一步筛选推荐游戏的区域，在页面当中的区域为div class='wrap'
    first_step = soup.find(lambda tag:tag.name=='div' and tag.get('class')==['wrap'])
    #第二步先大致选出首页当中推荐的所有动作游戏
    second_step = first_step.find('ul',{'class':'game_list'})
    #直接取p标签，来获取游戏名称
    print(type(second_step))
    last_step = second_step.find_all('p')
    for i in last_step:
        # print(i.string)
        #将游戏添加到列表当中
        all_game.append(i.string)
    return 0

if __name__ == '__main__':
    #定义字典 用来保存游戏标签与所有的游戏
    dic = {}
    #定义列表 用来保存所有的游戏
    all_game = []
    #循环遍历各个页面进行爬取所有的动作推荐游戏
    #爬取标题的url
    for num in range(0,25):
        url = 'http://www.7k7k.com/sheji/index_'+str(num+1)+'.htm'
        #分析每页的内容
        soup = spider_index(url)
        #爬取7k7k界面推荐的益智游戏
        spider_all_yizhi(soup)
    # 调用爬取标题函数
    game_tag = spider_title(soup)
    print(game_tag)
    print(len(all_game))
    dic[game_tag] = all_game
    print(dic)
    # with open('sheji_game.txt', 'w', encoding='utf-8') as f:
    #     f.write(json.dumps(dic, ensure_ascii=False))
